# Web Server์ WAS์ ์ฐจ์ด
์น ์๋ฒ์ was์ ์ฐจ์ด์ ์ ๋ฌด์์ผ๊น? ์๋ฒ ๊ฐ๋ฐ์ ์์ด์ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ด๋ค.
๋จผ์ , ์ ์ ํ์ด์ง์ ๋์ ํ์ด์ง๋ฅผ ์์๋ณด์
# Static Pages
๋ฐ๋์ง ์๋ ํ์ด์ง
์น ์๋ฒ๋ ํ์ผ ๊ฒฝ๋ก ์ด๋ฆ์ ๋ฐ๊ณ , ๊ฒฝ๋ก์ ์ผ์นํ๋ file contents๋ฅผ ๋ฐํํจ
ํญ์ ๋์ผํ ํ์ด์ง๋ฅผ ๋ฐํํจ
image, html, css, javascript ํ์ผ๊ณผ ๊ฐ์ด ์ปดํจํฐ์ ์ ์ฅ๋ ํ์ผ๋ค
# Dynamic Pages
์ธ์์ ๋ฐ๋ผ ๋ฐ๋๋ ํ์ด์ง
์ธ์์ ๋ด์ฉ์ ๋ง๊ฒ ๋์ ์ธ contents๋ฅผ ๋ฐํํจ
์น ์๋ฒ์ ์ํด ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ํตํด ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ (Servlet : was ์์์ ๋์๊ฐ๋ ์๋ฐ ํ๋ก๊ทธ๋จ)
๊ฐ๋ฐ์๋ Servlet์ doGet() ๋ฉ์๋๋ฅผ ๊ตฌํํจ
# ์น ์๋ฒ์ WAS์ ์ฐจ์ด
# ์น ์๋ฒ
๊ฐ๋ ์ ์์ด์ ํ๋์จ์ด์ ์ํํธ์จ์ด๋ก ๊ตฌ๋ถ๋๋ค.
ํ๋์จ์ด : Web ์๋ฒ๊ฐ ์ค์น๋์ด ์๋ ์ปดํจํฐ
์ํํธ์จ์ด : ์น ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ HTTP ์์ฒญ์ ๋ฐ๊ณ , ์ ์ ์ธ ์ปจํ ์ธ (html, css ๋ฑ)๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ
# ์น ์๋ฒ ๊ธฐ๋ฅ
Http ํ๋กํ ์ฝ์ ๊ธฐ๋ฐ์ผ๋ก, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋น์คํ๋ ๊ธฐ๋ฅ์ ๋ด๋น
์์ฒญ์ ๋ง๊ฒ ๋๊ฐ์ง ๊ธฐ๋ฅ ์ค ์ ํํด์ ์ ๊ณตํด์ผ ํ๋ค.
# ์ ์ ์ปจํ ์ธ ์ ๊ณต
WAS๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก ์์ ์ ๊ณต
# ๋์ ์ปจํ ์ธ ์ ๊ณต์ ์ํ ์์ฒญ ์ ๋ฌ
ํด๋ผ์ด์ธํธ ์์ฒญ์ WAS์ ๋ณด๋ด๊ณ , WAS์์ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
์น ์๋ฒ ์ข ๋ฅ : Apache, Nginx, IIS ๋ฑ
# WAS
Web Application Server์ ์ฝ์
DB ์กฐํ ๋ฐ ๋ค์ํ ๋ก์ง ์ฒ๋ฆฌ ์๊ตฌ์ ๋์ ์ธ ์ปจํ ์ธ ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
HTTP๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํํด์ฃผ๋ ๋ฏธ๋ค์จ์ด๋ค.
WAS๋ ์น ์ปจํ ์ด๋ ํน์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ๋ ๋ถ๋ฆผ
(์ปจํ ์ด๋๋ JSP, Servlet์ ์คํ์ํฌ ์ ์๋ ์ํํธ์จ์ด. ์ฆ, WAS๋ JSP, Servlet ๊ตฌ๋ ํ๊ฒฝ์ ์ ๊ณตํด์ค)
# ์ญํ
WAS = ์น ์๋ฒ + ์น ์ปจํ
์ด๋
์น ์๋ฒ์ ๊ธฐ๋ฅ๋ค์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๋ ์ญํ
๋ณด์, ์ค๋ ๋ ์ฒ๋ฆฌ, ๋ถ์ฐ ํธ๋์ญ์ ๋ฑ ๋ถ์ฐ ํ๊ฒฝ์์ ์ฌ์ฉ๋จ ( ์ฃผ๋ก DB ์๋ฒ์ ํจ๊ป ์ฌ์ฉ )
# WAS ์ฃผ์ ๊ธฐ๋ฅ
1.ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ ๋ฐ DB ์ ์ ๊ธฐ๋ฅ ์ ๊ณต
2.์ฌ๋ฌ ํธ๋์ญ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ
3.์ ๋ฌด ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ํ
WAS ์ข ๋ฅ : Tomcat, JBoss ๋ฑ
# ๊ทธ๋ผ, ๋์ ๊ตฌ๋ถํ๋ ์ด์ ๋?
# ์น ์๋ฒ๊ฐ ํ์ํ ์ด์
์น ์๋ฒ์์๋ ์ ์ ์ปจํ ์ธ ๋ง ์ฒ๋ฆฌํ๋๋ก ๊ธฐ๋ฅ ๋ถ๋ฐฐ๋ฅผ ํด์ ์๋ฒ ๋ถ๋ด์ ์ค์ด๋ ๊ฒ
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ์ง ํ์ผ(์ ์ ์ปจํ
์ธ )๋ฅผ ๋ณด๋ผ ๋..
์น ๋ฌธ์(html ๋ฌธ์)๊ฐ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ง ๋
์ด๋ฏธ์ง ํ์ผ๊ณผ ๊ฐ์ ์ ์ ํ์ผ์ ํจ๊ป ๋ณด๋ด์ง์ง ์์
๋จผ์ html ๋ฌธ์๋ฅผ ๋ฐ๊ณ , ์ด์ ํ์ํ ์ด๋ฏธ์ง ํ์ผ๋ค์
๋ค์ ์๋ฒ๋ก ์์ฒญํด์ ๋ฐ์์ค๋ ๊ฒ
๋ฐ๋ผ์ ์น ์๋ฒ๋ฅผ ํตํด์ ์ ์ ์ธ ํ์ผ์
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๊น์ง ๊ฐ์ง ์๊ณ ์๋จ์ ๋น ๋ฅด๊ฒ ๋ณด๋ผ ์ ์์!
# WAS๊ฐ ํ์ํ ์ด์
WAS๋ฅผ ํตํด ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ DB์์ ๊ฐ์ ธ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ทธ๋๋ง๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๊ณ ์ ๊ณตํ๋ฉด์ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์
๋์ ์ธ ์ปจํ
์ธ ๋ฅผ ์ ๊ณตํด์ผ ํ ๋..
์น ์๋ฒ๋ง์ผ๋ก๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ์
๋ชจ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์๋น์คํ๊ธฐ์๋ ์์์ด ์ ๋์ ์ผ๋ก ๋ถ์กฑํจ
๋ฐ๋ผ์ WAS๋ฅผ ํตํด ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค
DB์ ๋น์ฆ๋์ค ๋ก์ง์ ํตํด ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋ค์ด ์ ๊ณต!
# ๊ทธ๋ฌ๋ฉด WAS๋ก ์น ์๋ฒ ์ญํ ๊น์ง ๋ค ์ฒ๋ฆฌํ ์ ์๋๊ฑฐ ์๋๊ฐ์?
WAS๋ DB ์กฐํ, ๋ค์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ง์คํด์ผ ํจ.
๋ฐ๋ผ์ ๋จ์ํ ์ ์ ์ปจํ
์ธ ๋ ์น ์๋ฒ์๊ฒ ๋งก๊ธฐ๋ฉฐ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌ์์ผ ์๋ฒ ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ
๋ง์ฝ WAS๊ฐ ์ ์ ์ปจํ
์ธ ์์ฒญ๊น์ง ์ฒ๋ฆฌํ๋ฉด,
๋ถํ๊ฐ ์ปค์ง๊ณ ๋์ ์ปจํ
์ธ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๋ฉด์ ์ํ ์๋๊ฐ ๋๋ ค์ง
โ ํ์ด์ง ๋
ธ์ถ ์๊ฐ ๋์ด๋๋ ๋ฌธ์ ๋ฐ์
๋ํ, ์ฌ๋ฌ ๋์ WAS๋ฅผ ์ฐ๊ฒฐ์ง์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
์น ์๋ฒ๋ฅผ ์ ๋จ์ ๋๊ณ , WAS์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ด์ฉํ์ง ๋ชปํ๊ฒ ๋ง์๋ ๋ค ์ฌ์์ํ์ฌ ํด๊ฒฐํ ์ ์์ (์ฌ์ฉ์๋ ์ค๋ฅ๋ฅผ ๋๋ผ์ง ๋ชปํ๊ณ ์ด์ฉ ๊ฐ๋ฅ)
์์ ์ด์ฉ์ ํจ์จ์ฑ ๋ฐ ์ฅ์ ๊ทน๋ณต, ๋ฐฐํฌ ๋ฐ ์ ์ง ๋ณด์์ ํธ์์ฑ ๋๋ฌธ์ ์น ์๋ฒ์ WAS๋ฅผ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
# ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ
์น ์๋ฒ๋ฅผ WAS ์์ ๋๊ณ , ํ์ํ WAS๋ค์ ์น ์๋ฒ์ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ค์ ํ๋ฉด ํจ์จ์ ์ธ ๋ถ์ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํจ
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋จผ์ ์น ์๋ฒ๊ฐ ๋ฐ์ ๋ค์, WAS์๊ฒ ๋ณด๋ด ๊ด๋ จ๋ Servlet์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ
WAS๋ web.xml์ ์ฐธ์กฐํด ํด๋น Servlet์ ๋ํ ์ค๋ ๋๋ฅผ ์์ฑ (์ค๋ ๋ ํ ์ด์ฉ)
์ด๋ HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํด Servlet์๊ฒ ์ ๋ฌ
์ค๋ ๋๋ Servlet์ service() ๋ฉ์๋๋ฅผ ํธ์ถ
service() ๋ฉ์๋๋ ์์ฒญ์ ๋ง๊ฒ doGet()์ด๋ doPost() ๋ฉ์๋๋ฅผ ํธ์ถ
doGet()์ด๋ doPost() ๋ฉ์๋๋ ์ธ์์ ๋ง๊ฒ ์์ฑ๋ ์ ์ ํ ๋์ ํ์ด์ง๋ฅผ Response ๊ฐ์ฒด์ ๋ด์ WAS์ ์ ๋ฌ
WAS๋ Response ๊ฐ์ฒด๋ฅผ HttpResponse ํํ๋ก ๋ฐ๊ฟ ์น ์๋ฒ๋ก ์ ๋ฌ
์์ฑ๋ ์ค๋ ๋ ์ข ๋ฃํ๊ณ , HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด ์ ๊ฑฐ
# [์ฐธ๊ณ ์๋ฃ]
โ - REST API - OAuth โ